//////////////////////////////////////////////////////////////////////////////////
/// \file Skew.h
/// \author Lukasz Madon
/// \author 7madon@novell.ftj.agh.edu.pl OR lukasgt@wp.pl
/// \version 1.0.1
/// \date 16-01-2010
/// \brief Deklaracja klasy Skew sluzacej do pochylen obrazow. Plik naglowkowy.
///////////////////////////////////////////////////////////////////////////////////

#ifndef SKEW_H
#define SKEW_H

#include <QBitmap>

#include "transform.h"

/////////////////////////////////////////////////////////////////////////
/// \class Skew
/// \brief Klasa definujaca pochylenie obrazka. Dziedzyczy po klasie Transform.
/////////////////////////////////////////////////////////////////////////
class Skew : public Transform
{
public:   
   /////////////////////////////////////////////////////////////////////////
   /// Skew
   /// \brief Kostruktor domyslny.
   /////////////////////////////////////////////////////////////////////////
   Skew();

   /////////////////////////////////////////////////////////////////////////
   /// Destruktor.
   /////////////////////////////////////////////////////////////////////////
   ~Skew();

   /////////////////////////////////////////////////////////////////////////
   /// skewImage
   /// \brief Metoda skewImage odpowiada za pochylenie obrazka.
   /// \param newImage wskaznik na obrazek ktory bedzie pochylany.
   /// \param valx wartosc pochylenia wzgledem osi x od 0 do 50.
   /// \param valy wartosc pochylenia wzgledem osi y od 0 do 50.
   /// \return Zwraca obrazek po pochyleniu jako obiekt QImage.
   /////////////////////////////////////////////////////////////////////////
   QImage skewImage(QImage *newImage, int valx, int valy);

   /////////////////////////////////////////////////////////////////////////
   /// skewImageTwo
   /// \brief Metoda skewImageTwo odpowiada za pochylenie obrazka.
   /// \param newImage wskaznik na obrazek ktory bedzie pochylany.
   /// \param valx wartosc pochylenia wzgledem osi x od 0 do 50.
   /// \param valy wartosc pochylenia wzgledem osi y od 0 do 50.
   /// \return Zwraca obrazek po pochyleniu jako obiekt QImage.
   /////////////////////////////////////////////////////////////////////////
   QImage skewImageTwo(QImage *newImage, int valx, int valy);

private:
   /////////////////////////////////////////////////////////////////////////
   // tablica do inicializacji macierzy.
   /////////////////////////////////////////////////////////////////////////
   qreal tab[9];

   /////////////////////////////////////////////////////////////////////////
   // Wyjsciowy obrazek
   /////////////////////////////////////////////////////////////////////////
   QImage outImg;

};

#endif // SKEW_H
